#include <iostream>

int main() {
    // 定义一个高阶函数compose，用于组合两个函数
    auto compose = [](auto f1, auto f2) {
        return [f1, f2](auto x) { return f1(f2(x)); };
    };

    // 定义两个简单的函数：square和increment
    auto square = [](int x) { return x * x; };
    auto increment = [](int x) { return x + 1; };

    // 使用compose组合square和increment函数
    auto square_then_increment = compose(increment, square);

    // 测试组合后的函数
    int result = square_then_increment(3); // 结果为10 (3 * 3 + 1)
    std::cout << "Result: " << result << std::endl;

    return 0;
}